package de.unicornEntertainment.stundenplanapp.stundenplan;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import com.actionbarsherlock.app.SherlockActivity;

import de.unicornEntertainment.stundenplanapp.R;
import de.unicornEntertainment.stundenplanapp.adapter.MyArrayAdapter_StundenplanDetails;
import de.unicornEntertainment.stundenplanapp.login.ActivityLogin;
import de.unicornEntertainment.stundenplanapp.util.MyTools;

public class StundenplanDetailsActivity extends SherlockActivity implements OnItemSelectedListener {

	// Globale Deklaration
	private StundenplanDetailsActivity context = this;
	private MyArrayAdapter_StundenplanDetails adapter;
	private ProgressDialog prg;
	private String klassenname = "";
	private Intent intent;
	private WebView wv;
	private String url = "http://gruppef.green-lagoon.de/login.php?";
	private String url2 = "";
	private String url3 = null;
	private Spinner spn_ansichten;
	private Spinner spn_tage;
	private int zeuchs = 0;

	/**
	 * Wird beim erstmaligen Aufruf der Activity ausgeführt.
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_stundenplan_details);

		klassenname = ((intent = getIntent()).getStringExtra("klasse").toString());
		
		url2 += url + "klasse=" + klassenname + "&user="+ActivityLogin.getUser() + "&passwort=" + ActivityLogin.getPass() + "&head=wahr";
		
//		System.out.println(url2);
		
		
		// Lokale Deklaration => Hier der GUI-Elemente
		spn_ansichten = (Spinner) findViewById(R.id.stundenplan_spinner_ansicht);
		spn_tage = (Spinner) findViewById(R.id.stundenplan_spinner_tagesauswahl);
		wv = (WebView) findViewById(R.id.stundenplan_webview_stundenplan);
		
		// Spinner und GridView mit Daten versorgen
		ArrayAdapter<CharSequence> adapter_ansicht = ArrayAdapter.createFromResource(this, R.array.WochenTagesAnsicht, android.R.layout.simple_spinner_item);
		adapter_ansicht.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		ArrayAdapter<CharSequence> adapter_wochentage = ArrayAdapter.createFromResource(this, R.array.Wochentage, android.R.layout.simple_spinner_item);
		adapter_wochentage.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		//grid.setAdapter(adapter);
		
		// Adapter setzen
		spn_ansichten.setAdapter(adapter_ansicht);
		spn_tage.setAdapter(adapter_wochentage);
		
		// OnItemSelectedListener auf Spinner setzen
		spn_ansichten.setOnItemSelectedListener(this);
		spn_tage.setOnItemSelectedListener(this);
		spn_tage.setEnabled(false);
		
		// Wenn Internet vorhanden ist
		if (new MyTools(getApplicationContext()).isInternetVerfuegbar()) {
			try {
				// ProgressDialog starten
				prg = new ProgressDialog(context);
				prg.setCancelable(true);
				prg.setMessage("Stundenplan wird abgerufen...");
				prg.setTitle("Bitte warten...");
				prg.show();
//				prg = ProgressDialog.show(context, "Bitte warten...", "Stundenplan wird abgerufen...");
				
				// WebView Eigenschaften setzen
				wv.getSettings().setJavaScriptEnabled(true);
				wv.getSettings().setAppCacheEnabled(true);
				CookieSyncManager.createInstance(context);
				CookieSyncManager.getInstance().startSync();
				CookieManager.getInstance().setAcceptCookie(true);
				wv.setBackgroundColor(0x00000000);
				wv.getSettings().setLoadWithOverviewMode(true);
		        wv.getSettings().setUseWideViewPort(true);
		        wv.getSettings().setBuiltInZoomControls(true);
		        wv.getSettings().setSupportZoom(true);
		        wv.setVisibility(WebView.INVISIBLE);
		        String urlTmp = "http://gruppef.green-lagoon.de/login.php?head=wahr&user="+ActivityLogin.getUser()+"&passwort="+ActivityLogin.getPass()+"&klasse="+klassenname;
		        System.out.println("URL_temp: " + urlTmp);
		        wv.loadUrl(urlTmp);
		        System.out.println(url2);
		        wv.setWebViewClient(new WebViewClient() {
		        	
		        	public void onPageFinished(WebView view, String url) {
		        		System.out.println("URL geladen!");
		        		zeuchs=1;
		        		// Dialog entlassen
		        		prg.dismiss();
		        	}
		        });
//				wv.loadUrl(url2);
//		        wv.loadUrl("http://code.google.com");
		        wv.setVisibility(WebView.VISIBLE);
		
				// Thread ausführen und via JSON Daten aus der Datenbank holen und parsen
				//new MyAsyncTask_Stundenplan(context, this.klassenname).execute();
			}
			catch(Exception e) {
				e.printStackTrace();
				prg.dismiss();
			}
//			zeuchs = 1;
		} // Ende prüfe Internetverbindung
		else {
			// Activity schließen und User benachrichtigen, dass keine Internetverbindung besteht
			context.finish();
			Toast.makeText(context, "Keine Internetverbindung vorhanden!", Toast.LENGTH_LONG).show();
		}
	}
	
	/**
	 * Wertet die Spinner-Elemente aus und führt die entsprechenden Befehle aus.
	 */
	@Override
	public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {
		if(zeuchs == 1){
			int v = view.getId();
			
			String ansicht = spn_ansichten.getSelectedItem().toString();
			String tag = spn_tage.getSelectedItem().toString();
			
			// URL reinitialisieren
//			url2 = url;
			
			if (ansicht.equalsIgnoreCase("wochenansicht")) {
				spn_tage.setEnabled(false);
				url3 = url2;
			}
			else if (ansicht.equalsIgnoreCase("tagesansicht")) {
				spn_tage.setEnabled(true);
				url3 = "http://gruppef.green-lagoon.de/tagesstundenplan.php?klasse="+klassenname+"&wochentag="+tag;
				System.out.println("URL 3: " + url3);
			}
			
			// Wenn eine Internetverbindung vorhanden ist
			if (new MyTools(getContext()).isInternetVerfuegbar()) {
				
				// ProgressDialog starten
//				prg = ProgressDialog.show(context, "Bitte warten...", "Stundenplan wird abgerufen...");
				prg.show();
//				wv.setWebViewClient(new WebViewClient() {
//
//					   public void onPageFinished(WebView view, String url) {
//						   // Dialog entlassen
//						   prg.dismiss();
//					    }
//					});
				
				// Neuen Content laden
				if (null != url3) {
					wv.loadUrl(url3);
				}
			}
			else {
				Toast.makeText(context, "Keine Internetverbindung vorhanden!", Toast.LENGTH_LONG).show();
			}
		}
		else {
			//nothing else!
		}

	}

	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		//do nothing here!!!111
	}

	// Getter und Setter
	public StundenplanDetailsActivity getContext() {
		return context;
	}

	public void setContext(StundenplanDetailsActivity context) {
		this.context = context;
	}

	public MyArrayAdapter_StundenplanDetails getAdapter() {
		return adapter;
	}

	public void setAdapter(MyArrayAdapter_StundenplanDetails adapter) {
		this.adapter = adapter;
	}

	public ProgressDialog getPrg() {
		return prg;
	}

	public void setPrg(ProgressDialog prg) {
		this.prg = prg;
	}

}
